#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>          // 包含QMainWindow主窗口类
#include <QListWidget>          // 包含列表控件类
#include <QProgressBar>         // 包含进度条控件类
#include <QLabel>               // 包含标签控件类
#include <QPushButton>          // 包含按钮控件类
#include <QVBoxLayout>          // 包含垂直布局类
#include <QHBoxLayout>          // 包含水平布局类
#include <QGroupBox>            // 包含分组框类
#include <QSplitter>            // 包含分割器类
#include <QTableWidget>         // 包含表格控件类
#include <QHeaderView>          // 包含表头视图类

class FileOrganizer;  // 前向声明文件整理器类

class MainWindow : public QMainWindow
{
    Q_OBJECT  // Qt宏，启用信号槽机制

public:
    explicit MainWindow(QWidget* parent = nullptr);  // 构造函数
    ~MainWindow();  // 析构函数

private slots:
    // 槽函数：扫描按钮点击事件
    void onScanClicked();
    // 槽函数：整理按钮点击事件
    void onOrganizeClicked();
    // 槽函数：移动文件按钮点击事件
    void onMoveFilesClicked();
    // 槽函数：表格项选择变化事件
    void onTableItemSelectionChanged();
    // 槽函数：更新进度条
    void onProgressUpdated(int value, const QString& message);
    // 槽函数：操作完成
    void onOperationFinished();

private:
    // 初始化用户界面
    void setupUI();
    // 创建菜单栏
    void createMenuBar();
    // 创建状态栏
    void createStatusBar();
    // 更新文件统计信息
    void updateStatistics();

    // 界面控件指针
    QTableWidget* fileTable;           // 文件表格控件
    QProgressBar* progressBar;         // 进度条控件
    QLabel* statusLabel;               // 状态标签
    QLabel* countLabel;                // 计数标签
    QLabel* sizeLabel;                 // 大小标签
    QPushButton* scanButton;           // 扫描按钮
    QPushButton* organizeButton;       // 整理按钮
    QPushButton* moveFilesButton;      // 移动文件按钮

    FileOrganizer* fileOrganizer;      // 文件整理器对象
};

#endif // MAINWINDOW_H